#pragma once
class Vector
{
public:
	Vector(void);
	Vector(float x, float y, float z = 0.0f);
	~Vector(void);

	void Set(float x, float y, float z=0.0f);
	void SetX(float v);
	void SetY(float v);
	void SetZ(float v);

	float GetX() const;
	float GetY() const;
	float GetZ() const;

	Vector add(const Vector &vec) const;
	Vector subtract(const Vector &vec) const;
	Vector mult(float n) const;
	Vector divide(float n) const;
	float dot(const Vector &vec) const;
	Vector cross(const Vector& vec) const;
	float length() const;
	float distance(const Vector &vec) const;
	Vector normalise();

private:
	float m_x, m_y, m_z;
};

Vector operator+ (const Vector &lhs, const Vector &rhs);
Vector operator- (const Vector &lhs, const Vector &rhs);
Vector operator* (const Vector &lhs, float n);
Vector operator* (float n, const Vector &lhs);
Vector operator/ (const Vector &lhs, float n);